/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.escom.info.scanner.jsf;

import com.escom.administracion.dao.DocenteDAO;

import com.escom.administracionperfiles.correo.ProcesoJMailDAO;
import com.escom.administracionperfiles.hbm.dto.Docente;
import com.escom.cliente.exception.DAOException;
import com.escom.info.scanner.jsf.util.JsfUtil;
import java.io.Serializable;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author yamil
 */
public class DocenteController implements Serializable{

    private DocenteDAO facade;
    private Docente current;
    private List<Docente>  listaDocentes;
    private ProcesoJMailDAO   correoDAO;
    private String confirmaCorreo;

    public String getConfirmaCorreo() {
        return confirmaCorreo;
    }

    public void setConfirmaCorreo(String confirmaCorreo) {
        this.confirmaCorreo = confirmaCorreo;
    }



    public ProcesoJMailDAO getCorreoDAO() {
        return correoDAO;
    }

    public void setCorreoDAO(ProcesoJMailDAO correoDAO) {
        this.correoDAO = correoDAO;
    }

    public Docente getSelected() {
      return  current==null?new Docente():current;
    }

    public void setCurrent(Docente curren) {
        this.current = curren;
    }



    public DocenteDAO getFacade() {
        return facade;
    }

    public void setFacade(DocenteDAO facade) {
        this.facade = facade;
    }


public String prepareCreate(){
        current=new Docente();
        return "Create";
    }

    public List<Docente> getListaDocentes(){
        try {
            listaDocentes = getFacade().findAll();

        } catch (DAOException ex) {
            Logger.getLogger(DocenteController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return listaDocentes;
    }
private void sendEnviarCorreo(){
        try
        {
           correoDAO.enviarCorrreoRegistro(current.getCorreo(), String.valueOf(current.getBoleta()), current.getContrasenia(),"MAC");
           JsfUtil.addSuccessMessage("Mensaje Enviado Exitosamente");
        } catch (DAOException ex) {
            Logger.getLogger(AlumnoController.class.getName()).log(Level.SEVERE, null, ex);
            JsfUtil.addErrorMessage("Error al enviar correo electronico");
        }
    }
    public String create(){
        if(current.getCorreo().equals(getConfirmaCorreo())){
        try {
            if(getFacade().findDocenteByBoletaAndCorreo(current.getBoleta(), current.getCorreo()))
            {
                JsfUtil.addErrorMessage("Ya existe un Docente con esta boleta y correo electronico");
                return null;
            }
            current.setBoleta(current.getBoleta());
            current.setContrasenia(current.getContrasenia());
            current.setCorreo(current.getCorreo());
            current.setMaterno(current.getMaterno());
            current.setPaterno(current.getPaterno());
            setConfirmaCorreo("");
            getFacade().create(current);
            sendEnviarCorreo();
            JsfUtil.addSuccessMessage("Docente fue capturado Satisfactoriamente");
        } catch (DAOException ex) {
            Logger.getLogger(DocenteController.class.getName()).log(Level.SEVERE, null, ex);
            JsfUtil.addErrorMessage("Error el docente no ha sido creado"); //AQUI ESTA
        }
        }else{
        setConfirmaCorreo("");
        JsfUtil.addErrorMessage("Error los correos no son iguales,favor de verificarlos");
        return null;
        }
        return "View";
    }

    public String update(){
          try {
            if(!getConfirmaCorreo().equals(current.getCorreo()))
            {
              JsfUtil.addErrorMessage("Error correo electronico son distintos");
              return null;
            }
            current.setBoleta(current.getBoleta());
            current.setContrasenia(current.getContrasenia());
            current.setCorreo(current.getCorreo());
            current.setMaterno(current.getMaterno());
            current.setPaterno(current.getPaterno());
            getFacade().edit(current);
            JsfUtil.addSuccessMessage("Docente actualizado Satisfactoriamente");

        } catch (Exception ex) {
            Logger.getLogger(DocenteController.class.getName()).log(Level.SEVERE, null, ex);
            JsfUtil.addErrorMessage("Error el docente no ha sido actualizado"); //AQUI ESTA
        }
          return "View";
    }

    public String prepareEdit(Docente dominio){
        current=dominio;
        setConfirmaCorreo(current.getCorreo());
        return "Edit";
    }

    public String prepareView(Docente dominio){
        current=dominio;

        return "View";
    }

    public void prepareDestroy(Docente dominio){
        try {
            //current=dominio;
            getFacade().remove(dominio);
            JsfUtil.addSuccessMessage("Docente eliminado Satisfactoriamente");
        } catch (DAOException ex) {
            Logger.getLogger(DocenteController.class.getName()).log(Level.SEVERE, null, ex);
            JsfUtil.addErrorMessage("Error el docente no ha sido eliminado"); //AQUI ESTA
        }
    }

    public String prepareList(){
        return "List";
    }
}
